home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / windows / tpwin31.zip / PRINT.PAS < prev    next >
Pascal/Delphi Source File  |  1992-04-06  |  11KB  |  302 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {     Turbo Pascal for Windows Run-time Library         }
  4. {     Windows 3.1 API Interface Unit                    }
  5. {     Printing helper functions, types, and definitions }
  6. {                                                       }
  7. {     Copyright (c) 1992 Borland International          }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit Print;
  12.  
  13. interface
  14.  
  15. uses WinTypes;
  16.  
  17. type
  18.   PTType = TPoint;
  19.  
  20. const
  21.   pqError  = -1;
  22.  
  23. type
  24.   HPQ = Word;
  25.  
  26. function CreatePQ(i: Integer): HPQ;
  27. function MinPQ(h: HPQ): Integer;
  28. function ExtractPQ(h: HPQ): Integer;
  29. function InsertPQ(h: HPQ; i1: Integer; i2: Integer): Integer;
  30. function SizePQ(h: HPQ; i: Integer): Integer;
  31. procedure DeletePQ(h: HPQ);
  32.  
  33. { Spool routines for use by printer drivers }
  34.  
  35. type
  36.   HPJob = Word;
  37.  
  38. function OpenJob(P1: PChar; P2: PChar; Job: HPJob): HPJob;
  39. function StartSpoolPage(Job: HPJob): Integer;
  40. function EndSpoolPage(Job: HPJob): Integer;
  41. function WriteSpool(Lob: HPJob; P: PChar; i: Integer): Integer;
  42. function CloseJob(Job: HPJob): Integer;
  43. function DeleteJob(Job: HPJob; i: Integer): Integer;
  44. function WriteDialog(Job: HPJob; P: PChar; i: Integer): Integer;
  45. function DeleteSpoolPage(Job: HPJob): Integer;
  46.  
  47. type
  48.  
  49.   { LPBI used as far pointer to this record in SDK }
  50.   PBandInfoStruct = ^TBandInfoStruct;
  51.   TBandInfoStruct = record
  52.     fGraphics: Bool;
  53.     fText: Bool;
  54.     rcGraphics: TRect;
  55.   end;
  56.  
  57. const
  58.   USA_CountryCode  = 1;
  59.  
  60. {
  61.  *  Printer driver initialization using ExtDeviceMode()
  62.  *  and DeviceCapabilities().
  63.  *  This replaces Drivinit.h
  64.  }
  65.  
  66. { size of a device name string }
  67. const
  68.   CCHDeviceName = 32;
  69.   CCHPaperName  = 64;
  70.  
  71. { current version of specification }
  72. const
  73.   dm_SpecVersion = $30A;
  74.  
  75. { field selection bits }
  76. const
  77.   dm_Orientation      = $0000001;
  78.   dm_PaperSize        = $0000002;
  79.   dm_PaperLength      = $0000004;
  80.   dm_PaperWidth       = $0000008;
  81.   dm_Scale            = $0000010;
  82.   dm_Copies           = $0000100;
  83.   dm_DefaultSource    = $0000200;
  84.   dm_PrintQuality     = $0000400;
  85.   dm_Color            = $0000800;
  86.   dm_Duplex           = $0001000;
  87.   dm_YResolution      = $0002000;
  88.   dm_TTOption         = $0004000;
  89.  
  90. { orientation selections }
  91. const
  92.   dmOrient_Portrait   = 1;
  93.   dmOrient_Landscape  = 2;
  94.  
  95. { paper selections }
  96. {  Warning: The PostScript driver mistakingly uses DMPAPER_ values between
  97.  *  50 and 56.  Don't use this range when defining new paper sizes.
  98.  }
  99. const
  100.   dmPaper_Letter      = 1;           { Letter 8 1/2 x 11 in               }
  101.   dmPaper_LetterSmall = 2;           { Letter Small 8 1/2 x 11 in         }
  102.   dmPaper_Tabloid     = 3;           { Tabloid 11 x 17 in                 }
  103.   dmPaper_Ledger      = 4;           { Ledger 17 x 11 in                  }
  104.   dmPaper_Legal       = 5;           { Legal 8 1/2 x 14 in                }
  105.   dmPaper_Statement   = 6;           { Statement 5 1/2 x 8 1/2 in         }
  106.   dmPaper_Executive   = 7;   { Executive 7 1/4 x 10 1/2 in        }
  107.   dmPaper_A3          = 8;           { A3 297 x 420 mm                    }
  108.   dmPaper_A4          = 9;           { A4 210 x 297 mm                    }
  109.   dmPaper_A4Small     = 10;          { A4 Small 210 x 297 mm              }
  110.   dmPaper_A5          = 11;          { A5 148 x 210 mm                    }
  111.   dmPaper_B4          = 12;          { B4 250 x 354                       }
  112.   dmPaper_B5          = 13;          { B5 182 x 257 mm                    }
  113.   dmPaper_Folio       = 14;          { Folio 8 1/2 x 13 in                }
  114.   dmPaper_Quarto      = 15;          { Quarto 215 x 275 mm                }
  115.   dmPaper_10X14       = 16;          { 10x14 in                           }
  116.   dmPaper_11X17       = 17;          { 11x17 in                           }
  117.   dmPaper_Note        = 18;          { Note 8 1/2 x 11 in                 }
  118.   dmPaper_Env_9       = 19;          { Envelope #9 3 7/8 x 8 7/8          }
  119.   dmPaper_Env_10      = 20;          { Envelope #10 4 1/8 x 9 1/2         }
  120.   dmPaper_Env_11      = 21;          { Envelope #11 4 1/2 x 10 3/8        }
  121.   dmPaper_Env_12      = 22;          { Envelope #12 4 \276 x 11           }
  122.   dmPaper_Env_14      = 23;          { Envelope #14 5 x 11 1/2            }
  123.   dmPaper_CSheet      = 24;          { C size sheet                       }
  124.   dmPaper_DSheet      = 25;          { D size sheet                       }
  125.   dmPaper_ESheet      = 26;          { E size sheet                       }
  126.   dmPaper_Env_DL      = 27;          { Envelope DL 110 x 220mm            }
  127.   dmPaper_Env_C5      = 28;          { Envelope C5 162 x 229 mm           }
  128.   dmPaper_Env_C3      = 29;          { Envelope C3  324 x 458 mm          }
  129.   dmPaper_Env_C4      = 30;          { Envelope C4  229 x 324 mm          }
  130.   dmPaper_Env_C6      = 31;          { Envelope C6  114 x 162 mm          }
  131.   dmPaper_Env_C65     = 32;          { Envelope C65 114 x 229 mm          }
  132.   dmPaper_Env_B4      = 33;          { Envelope B4  250 x 353 mm          }
  133.   dmPaper_Env_B5      = 34;          { Envelope B5  176 x 250 mm          }
  134.   dmPaper_Env_B6      = 35;          { Envelope B6  176 x 125 mm          }
  135.   dmPaper_Env_Italy   = 36;          { Envelope 110 x 230 mm              }
  136.   dmPaper_Env_Monarch = 37;          { Envelope Monarch 3.875 x 7.5 in    }
  137.   dmPaper_Env_Personal = 38;         { 6 3/4 Envelope 3 5/8 x 6 1/2 in    }
  138.   dmPaper_Fanfold_US  = 39;          { US Std Fanfold 14 7/8 x 11 in      }
  139.   dmPaper_Fanfold_Std_German  = 40;  { German Std Fanfold 8 1/2 x 12 in   }
  140.   dmPaper_Fanfold_Lgl_German  = 41;  { German Legal Fanfold 8 1/2 x 13 in }
  141.  
  142.   dmPaper_First     = dmPaper_Letter;
  143.   dmPaper_Last      = dmPaper_Fanfold_Lgl_German;
  144.  
  145.   dmPaper_User      = 256;
  146.  
  147. { bin selections }
  148. const
  149.   dmBin_Upper         = 1;
  150.   dmBin_OnlyOne       = 1;
  151.   dmBin_Lower         = 2;
  152.   dmBin_Middle        = 3;
  153.   dmBin_Manual        = 4;
  154.   dmBin_Envelope      = 5;
  155.   dmBin_EnvManual     = 6;
  156.   dmBin_Auto          = 7;
  157.   dmBin_Tractor       = 8;
  158.   dmBin_SmallFmt      = 9;
  159.   dmBin_LargeFmt      = 10;
  160.   dmBin_LargeCapacity = 11;
  161.   dmBin_Cassette      = 14;
  162.  
  163.   dmBin_First     = dmBin_Upper;
  164.   dmBin_Last      = dmBin_Cassette;
  165.  
  166.   dmBin_User      = 256;    { device specific bins start here }
  167.  
  168. { print qualities }
  169. const
  170.   dmRes_Draft   = -1;
  171.   dmRes_Low     = -2;
  172.   dmRes_Medium  = -3;
  173.   dmRes_High    = -4;
  174.  
  175. { color enable/disable for color printers }
  176. const
  177.   dmColor_Monochrome  = 1;
  178.   dmColor_Color       = 2;
  179.  
  180. { duplex enable }
  181. const
  182.   dmDup_Simplex    = 1;
  183.   dmDup_Vertical   = 2;
  184.   dmDup_Horizontal = 3;
  185.  
  186. { TrueType options }
  187. const
  188.   dmtt_Bitmap     = 1;       { print TT fonts as graphics }
  189.   dmtt_Download   = 2;       { download TT fonts as soft fonts }
  190.   dmtt_SubDev     = 3;       { substitute device fonts for TT fonts }
  191.  
  192. type
  193.   PDevMode = ^TDevMode;
  194.   TDevMode = record
  195.     dmDeviceName: array[0..CCHDeviceName-1] of Char;
  196.     dmSpecVersion: Word;
  197.     dmDriverVersion: Word;
  198.     dmSize: Word;
  199.     dmDriverExtra: Word;
  200.     dmFields: Longint;
  201.     dmOrientation: Integer;
  202.     dmPaperSize: Integer;
  203.     dmPaperLength: Integer;
  204.     dmPaperWidth: Integer;
  205.     dmScale: Integer;
  206.     dmCopies: Integer;
  207.     dmDefaultSource: Integer;
  208.     dmPrintQuality: Integer;
  209.     dmColor: Integer;
  210.     dmDuplex: Integer;
  211.     dmYResolution: Integer;
  212.     dmTTOption: Integer;
  213.   end;
  214.  
  215. { mode selections for the device mode function }
  216. const
  217.   dm_Update     = 1;
  218.   dm_Copy       = 2;
  219.   dm_Prompt     = 4;
  220.   dm_Modify     = 8;
  221.  
  222.   dm_In_Buffer      = dm_Modify;
  223.   dm_In_Prompt      = dm_Prompt;
  224.   dm_Out_Buffer     = dm_Copy;
  225.   dm_Out_Default    = dm_Update;
  226.  
  227. { device capabilities indices }
  228. const
  229.   dc_Fields           = 1;
  230.   dc_Papers           = 2;
  231.   dc_PaperSize        = 3;
  232.   dc_MinExtent        = 4;
  233.   dc_MaxExtent        = 5;
  234.   dc_Bins             = 6;
  235.   dc_Duplex           = 7;
  236.   dc_Size             = 8;
  237.   dc_Extra            = 9;
  238.   dc_Version          = 10;
  239.   dc_Driver           = 11;
  240.   dc_BinNames         = 12;
  241.   dc_EnumResolutions  = 13;
  242.   dc_FileDependencies = 14;
  243.   dc_TrueType         = 15;
  244.   dc_PaperNames       = 16;
  245.   dc_Orientation      = 17;
  246.   dc_Copies           = 18;
  247.  
  248. { bit fields of the return value (DWORD) for DC_TRUETYPE }
  249. const
  250.   dctt_Bitmap     = $0000001;
  251.   dctt_Download   = $0000002;
  252.   dctt_SubDev     = $0000004;
  253.  
  254. { export ordinal definitions }
  255. const
  256.   proc_ExtDeviceMode      = MakeIntResource(90);
  257.   proc_DeviceCapabilities = MakeIntResource(91);
  258.   proc_OldDeviceMode      = MakeIntResource(13);
  259.  
  260. { define types of pointers to ExtDeviceMode() and DeviceCapabilities()
  261.  * functions
  262.  }
  263. type
  264.   TExtDevMode = function(Wnd: HWnd; Driver: THandle;
  265.     DevModeOutput: PDevMode; DeviceName, Port: PChar;
  266.     DevModeInput: PDevMode; Profile: PChar; Mode: Word): Word;
  267.  
  268. type
  269.   TDevCaps = function(DeviceName, Port: PChar; index: Word;
  270.     OutPut: PChar; DevMode: PDevMode): Longint;
  271.  
  272.  
  273. function ResetDC(aHdc: HDC; DevMode: PDevMode): HDC;
  274.  
  275. { this structure is used by the GETSETSCREENPARAMS escape }
  276. type
  277.   PScreenParams = ^TScreenParams;
  278.   TScreenParams = record
  279.     Angle: Integer;
  280.     Frequency: Integer;
  281.   end;
  282.  
  283. implementation
  284.  
  285. function CreatePQ;                           external 'GDI' index 230;
  286. function MinPQ;                              external 'GDI' index 231;
  287. function ExtractPQ;                          external 'GDI' index 232;
  288. function InsertPQ;                           external 'GDI' index 233;
  289. function SizePQ;                             external 'GDI' index 234;
  290. procedure DeletePQ;                          external 'GDI' index 235;
  291. function OpenJob;                            external 'GDI' index 240;
  292. function StartSpoolPage;                     external 'GDI' index 246;
  293. function EndSpoolPage;                       external 'GDI' index 247;
  294. function WriteSpool;                         external 'GDI' index 241;
  295. function CloseJob;                           external 'GDI' index 243;
  296. function DeleteJob;                          external 'GDI' index 244;
  297. function WriteDialog;                        external 'GDI' index 242;
  298. function DeleteSpoolPage;                    external 'GDI' index 253;
  299. function ResetDC;                            external 'GDI' index 376;
  300.  
  301. end.
  302.